package com.yugao.fintech.antelope.infra.weixin.mp.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yugao.fintech.antelope.infra.weixin.mp.model.entity.MpMaterial;
import com.yugao.fintech.antelope.infra.weixin.mp.model.rqrs.MpMaterialPageReq;
import com.yugao.fintech.antelope.infra.weixin.mp.model.rqrs.MpMaterialResp;
import com.yugao.fintech.antelope.infra.weixin.mp.model.rqrs.MpMaterialSaveReq;
import com.yugao.fintech.antelope.infra.weixin.mp.model.rqrs.MpMaterialUpdateReq;

import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
/**
 * 公众号素材
 *

 */
public interface MpMaterialService extends IService<MpMaterial> {
    /**
     * 保存永久素材
     *
     * 媒体文件在微信后台保存时间为 3 天，即 3 天后 media_id 失效。
     * @param rq 请求
     * @return 素材
     * @throws IOException 文件操作发生异常
     */
    MpMaterial savePermanentMaterial(@Valid MpMaterialSaveReq rq) throws Exception;

    /**
     * 分页查询 公众号素材
     *
     * @return 返回分页数据
     */
    IPage<MpMaterialResp> pageMaterial(MpMaterialPageReq query);
    
    /**
     * 查询 公众号素材 所有记录
     *
     * @return 返回集合，没有返回空List
     */
    List<MpMaterialResp> listMaterial();

    /**
     * 更新 公众号素材
     *
     * @param rq 修改的记录
     * @return 是否更新成功
     */
    boolean updateMaterialById(MpMaterialUpdateReq rq);
    
    /**
     * 通过id获取 公众号素材
     *
     * @param id 主键
     * @return 是否删除成功
     */
    MpMaterialResp getMaterialById(Long id);

    /**
     * 通过id删除 公众号素材
     *
     * @param id 主键
     * @return 是否删除成功
     */
    boolean deleteMaterialById(Long id);
}
